File sharing systems and services have been provided to maintain synchronization among a plurality of endpoints at which a synchronized folder and/or its contents (e.g., files) may be stored. Synchronization has been performed via processing done primarily on the server side, enabling synchronization to be provided across disparate client devices and systems using relatively minimal client side software.
For example, in prior approaches, when an opportunity to synchronize a folder or other synchronization set as stored on a client device or system arose, e.g., the client checked in with a synchronization server, the server would determine which changes made elsewhere needed to be applied to the client device or system. However, at scale, such a server centric approach would strain server side resources, particularly for large synchronization sets and/or for systems that must synchronize a large number of synchronization sets of files (e.g., folders) across many client devices/systems and/or end users. The approach was also too restrictive, unable to take advantage of client-side context unavailable to the server at the time the synchronization calculation was performed.